#ifndef RANGE_EXTENDER_H
#define RANGE_EXTENDER_H
/*
增程启动相关
保持线圈就是熄火线圈
接触器控制

1.启动线圈
2.熄火
3.水泵
4.燃油
5.预热
6.充电接触器控制

启动 启动线圈（MAX3s）+熄火保持+水泵+燃油泵+接触器,3s后如果转速反馈低于800，全部关闭，10s后允许重启
*/
typedef enum
{
	RE_StateIdle=0,
	RE_StateStarting,
	RE_StateStartOk,
	RE_StateStartErr,
	RE_StateOffing
}enumRangeExtenderState;
typedef struct
{
	enumRangeExtenderState enRE_State;
	enumRangeExtenderState enRE_StateLast;
	UINT16 u16StartCoilRunTime;//启动线圈输出最长输出不超过3秒 ，如果增程器在3秒内启动成功，则输出小于3秒
	UINT16 u16HoldCoilOffTime;//保持线圈输出（从启动到启动成功之后一直输出，直到增程器熄火延时20秒后才关闭输出）
	UINT16 u16OidPumpOffTime;//燃油泵输出（开机上电运行10秒，10秒后增程器没启动则停止输出，启动成功之后一直输出，直到增程器熄火）
	UINT16 u16RpmFitterTime;
	/*
	如果十秒内增程器转速>800转且持续300毫秒以
	上，则增程器启动成功，否则启动失败。增程器
	持续启动时间最长为10秒
	*/
	UINT16 u16RangeExtenderPowerOnTimeCnt;//
	UINT16 u16ReStartDelayCnt;
}structRangeExtenderManualMode;
/*
增程启动相关
保持线圈就是熄火线圈
接触器控制

1.启动线圈
2.保持线圈（熄火线圈）
3.水泵线圈
4.燃油线圈
5.预热线圈
6.充电接触器控制

启动 启动线圈（MAX3s）+熄火保持+水泵+燃油泵+接触器,3s后如果转速反馈低于800，全部关闭，10s后允许重启
//温度低需要预热
*/

typedef union
{
	UINT8 Bytes[1];
	struct
	{
		UINT8 fStartCoil:1;
		UINT8 fHoldCoil:1;
		UINT8 fWaterPump:1;
		UINT8 fOilPump:1;
		UINT8 fChargeCtrlCoil:1;
		UINT8 fPreHeatCoil:1;
		UINT8 Byte0NC:2;
	}bit;
}unionRangeExtenderOutPut;
extern structRangeExtenderManualMode stREMM;
extern unionRangeExtenderOutPut unRE_Out;
extern void vProcRangeExtenderManualMode(void);//10ms

#endif
